1. Technical Field of the Invention
The present invention generally relates to computer systems. More particularly, and not by way of any limitation, the present invention is directed to a system and method for implementing a fast reboot, or reset, of a computer system.
2. Description of Related Art
During development and testing of a computer system, the system will be rebooted very often. It would not be unusual for a large computer system to take 10 to 15 minutes to completely reboot. If a system is rebooted a number of times each day, which is typically the case, a considerable amount of time may be spent simply waiting for the system to reboot. For example, assuming a particular system takes 15 minutes to reboot and is rebooted 12 times a day, three hours are essentially wasted simply waiting for the system to reboot. Clearly, this is an inefficient use of valuable time and resources and adds to the overall expense of developing and testing, and therefore producing, a computer system.
The Extensible Firmware Interface (“EFI”) specification, developed by Intel Corporation, defines a new model for an interface between a computer's operating system (“OS”) and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the OS and its loader. Together, these provide a standard environment for booting an OS and running pre-boot applications. One service provided by EFI is an “EFIResetSystem( )” function, which resets the entire platform, including all processors and devices, and reboots the system. Calling the function with a ResetType of “EfiResetCold” (COLD option) causes a system-wide reset. This sets all circuitry within the system to its initial state. This type of reset is asynchronous to system operations and operates without regard to cycle boundaries. EfiResetCold is tantamount to a system power cycle. Calling the function with a ResetType of “EfiResetWarm” (WARM option) causes a system-wide initialization. The processors are reset to their initial state and pending cycles are not corrupted. As evident from the foregoing, a “WARM” reset is accomplished more quickly than a “COLD” reset; however, neither are suitably fast to solve the problems addressed above with regard to the substantial delay caused by the multiple resets that take place during development and testing of a new system.
One solution to the aforementioned problem will be referred to herein as “Speedy Boot”. The Speedy Boot specification defines certain EFI boot variables that can be used by an OS to communicate boot options to system firmware. In effect, Speedy Boot causes a system to undergo a full reset and then skips certain initialization steps as indicated by the EFI boot variables that are set by the OS. In operation, the OS writes to the EFI boot variables to set options for subsequent boots. Optionally, the user can also write to the EFI boot variables using a firmware user interface. The system firmware, EFI and option ROMs read from the EFI boot variables during Power-On Self-Test (“POST”) to determine what actions to take. Hence, Speedy Boot provides a partial time-savings when a system is rebooted several times, e.g., during development; however, it may not be as significant as would be desirable in a large system.
Additionally, according to the Intel EFI specification, during early initialization of the OS, the OS is required to call an EFI function referred to as ExitBootServices( ). This function call results in some EFT functionality being disabled until the system goes through a complete reset and EFI is reinitialized. It will be recognized that there will be instances in which it may be helpful to have access to system state variables that are lost by performing a full reset, for example, for debugging purposes. Presently, there is no mechanism by which to access that data.